Clipboard As A Queue
クリップボードをキューに見立てればなんか広がらないか? 投入サイズ1だけど
クリップボード履歴のロジック入れたらnにできる
code:clipboard_as_a_queue
User
|
| コピーする
V
A
| RAQがすぐに見に行って、取り出す
|
A A
| |
| |
Receiver Receiver レシーバ達はRAQが持つキューを見に行く
ユーザーは次々とコピーするだけでいい
それだけで、バックでキューとReceiver達がよしなに処理してくれる
Receiver達は勝手に処理をして、その結果を保存&提供している
ユーザーはそれを見に行くことで利用できる
そうだよ、全部Receiverにやらせておけばいいんだよsta.icon
たとえば「全角文字を消すReceiver」は裏で動かしておく
こいつは常に全角文字消して、その結果を置いてる
ユーザーは、使いたいときにこいつ見に行って使えばいい
パスワード扱いたくないとかsensitiveな事情があるなら、RAQ側でなんとかする
code:RAQ filtering
User
|
|
V
A
|
|
A A
| |
| |
Receiver Receiver
実装少し考えてみる
RAQとReceiverをどうするか
RAQ
ahkの常駐プログラムとして
クリップボードデータはどこに保存しようか
ファイルかプロセス間通信くらいしかない
独立性考えたらファイルか。1-data 1-file
今どきのPCなら性能面も問題ないでしょ
書き込み回数
≒クリップボードを書き換える頻度次第
1分6回とする
6*60*24 1日で8600ファイル
6*60*24*30 1ヶ月で25.9万ファイル
n-data 1-file
たとえばjsonでlistで保存するとか
Receiver
RAQが保存したキューデータを読み込む
どこまで読み込んだかは記録しておく必要がある?
if そのデータが自分の処理対象でない then おしまい
処理する
どっかに保存する
どっか?sta.icon*2
ここが争点
Receiverが保存したデータをどうやって利用させるか
簡単に選択&検索&コピーできるようにしたいんだよな
Default Receiver
デフォで採用するReceiver
たとえば「全角文字を取り除くReceiver」をデフォにすると、クリップボードの中身は常に全角文字が取り除かれる
default receiverによって処理される
n-Receiver使いたい場合はどうする?sta.icon
全体のもたせ方いくつかあるな
パターン1
RAQが持つデータ≒クリップボード履歴(何の加工もしないReceiver)
パターン2
Receiverの最後に「RAQのデータを消すReceiver」を置く
各Receiverは一度だけデータを処理できる
最後にはデータが消える
よって、同じデータを複数回処理することはない&その重複管理を各Receiverが行う必要もない
パターン3
自由なパイプライン
receiver type
pure receiver(何も加工しないReceiver)
sensitive filter receiver(センシティブ情報のみ取り除く)
XXX receiver(XXXの処理を行えるもののみ取り扱い、処理した分を保存)
で、これらを自由に組み合わせる
pure → sensitive → xxx, yyy, zzz, ……
pure → xxx → sensitive → yyy, zzz, ……
pure → sensitive → xxx → yyy, zzz, ……
柔軟性は高いsta.icon
なんかローコードだな